#ifndef NO_H_
#define NO_H_

template <class T>
class noh
{
public:
	noh(T);
	
	~noh();
	
	void
	setInfo(T);
	
	T
	getInfo();
	
	void
	setPosterior( noh<T>* );
	
	void
	setAnterior( noh<T>* );
	
	noh<T>*
	getPosterior();
	
	noh<T>*
	getAnterior();
	
protected:

	T
	info;

private:
	
	noh<T>*
	anterior;
	
	noh<T>*
	posterior;
};


/********************************
 * 
 *   Implementation
 * 
 * ******************************/

template<class T> 
noh<T>::noh( T _info = 0)
{
	this->anterior = 0;
	this->posterior = 0;
	this->info = _info;
}

template <class T> 
noh<T>::~noh()
{
	
}

template<class T> void
noh<T>::setInfo(T _info)
{
	this->info = _info;
}

template<class T> T
noh<T>::getInfo()
{
	return this->info;
}

template<class T> void
noh<T>::setPosterior( noh<T>* _posterior)
{
	this->posterior = _posterior;
}

template<class T> void
noh<T>::setAnterior( noh<T>* _anterior )
{
	this->anterior = _anterior;
}

template<class T> noh<T>*
noh<T>::getAnterior()
{
	return this->anterior;
}

template<class T> noh<T>*
noh<T>::getPosterior()
{
	return this->posterior;
}

#endif /*NO_H_*/
